﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using COFE.Core;

namespace COFE.Core.Plugin
{
    public interface IPluginManager
    {
        /// <summary>
        /// A list of imported plugins.
        /// </summary>
        List<IPlugin> Plugins { get; }

        /// <summary>
        /// A list of plugin users
        /// </summary>
        List<IPluginUser> PluginUser { get; }


        IEnumerable<P> GetPlugins<P>() where P : IPlugin;

        ///// <summary>
        ///// This is called automatically When Plugins is completed loaded, then all plugin's OnInit() is called, sequence based on priority.
        ///// </summary>
        //void OnInit(PluginInitStage stage);

        ///// <summary>
        ///// This is called when a user is logined.
        ///// </summary>
        ///// <param name="user"></param>
        //void OnLogin(IUserProfile user);
    }
}
